#include "GlobalHeader.h"

void func()
{
    char msg[1024] = {0};
    while(1)
    {
        scanf("%s",msg);
        if(strcmp(msg,"quit") == 0)
            _exit(100);
        printf("%s\n",msg);
    }
}


int main()
{
    //创建进程函数--有两个返回值
    pid_t pid = fork();
    if(pid < 0)
    {
        perror("fork");
        return -1;
    }

    
    //子进程(这里的pid不是指进程号)
    if(pid == 0)
    {
        printf("这是一条子进程,pid:%d ppid:%d\n",getpid(),getppid());
        sleep(1);
        func();
        printf("子进程结束\n");
        return 2;
    }
    //父进程(pid = 子进程的进程号 pid是上面定义的pid_t pid)
    else
    {
        printf("这是一条父进程,pid:%d childID:%d\n",getpid(),pid);
        int result = 0;
        //阻塞型函数:会阻塞进程的函数
        //wait(&result);
        //等待指定进程
        waitpid(pid,&result,0);
        //进程的返回值藏在进程值的高8位
        printf("子进程已经结束,返回值是%d\n",WEXITSTATUS(result));
    }
    return 0;
}